package com.javafamily.familydemo.dao;

import com.javafamily.familydemo.model.Pets;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;
import java.util.List;

// 表示当前类是持久层依赖注入的对象
@Repository
public class PetsDAO {

    @Resource
    // 进行JDBC操作的模版类（由Spring JDBC提供）
    private JdbcTemplate familyJdbcTemplate;

    // 增加一只宠物的信息
    public void save(Pets pets, JdbcTemplate jdbcTemplate) {
        if (jdbcTemplate == familyJdbcTemplate){
            jdbcTemplate = familyJdbcTemplate;
        }
        // jdbcTemplate.update适合于insert 、update和delete操作，不适合查询操作。
        jdbcTemplate.update("INSERT INTO pets(name,varieties,create_time) values(?, ?, ?)",
                pets.getName(),
                pets.getVarieties(),
                pets.getCreateTime());
    }

    // 删除一只宠物的信息
    public void deleteById(Long id,JdbcTemplate jdbcTemplate) {
        jdbcTemplate.update("DELETE FROM pets WHERE id = ?", id);
    }

    // 修改一只宠物信息
    public void updateById(Pets pets, JdbcTemplate jdbcTemplate) {
        jdbcTemplate.update("UPDATE pets SET name = ?,varieties = ?,create_time = ? WHERE id = ?",
                pets.getName(),
                pets.getVarieties(),
                pets.getCreateTime(),
                pets.getId());
    }

    // 查找宠物信息，queryForObject：用于查询单条记录返回结果
    public Pets searchById(Long id,JdbcTemplate jdbcTemplate) {
        return (Pets) jdbcTemplate.queryForObject("SELECT * FROM pets WHERE id=?",
                new Object[]{id}, new BeanPropertyRowMapper<>(Pets.class));
    }

    // 查询宠物信息，query：用于查询结果列表
    public List<Pets> findAll(JdbcTemplate jdbcTemplate) {
        return (List<Pets>) jdbcTemplate.query("SELECT * FROM pets ", new BeanPropertyRowMapper<>(Pets.class));
    }


}
